package actions;

import gui.Venster;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.KeyStroke;

/**
 * Deze klasse is afgeleid van AbstractAction en implementeert bijgevolg de
 * methode actionPerformed
 * <p>
 * Deze actieklasse dient om de applicatie (tijdelijk) te stoppen
 * @author Bart Bruynooghe
 * @author Benjamin De Clercq
 * @author Thomas Flamant
 * @author Sander Van den Broecke
 * @see AbstractAction
 */
public class PauzeAction extends AbstractAction {

	private Venster ouder;

	/**
	 * De constructor zorgt ervoor dat het attribuut ouder wordt geïnitialiseerd
	 * met zijn ouderVenster
	 * @param ouder het venster ouder wordt meegegeven
	 */
	public PauzeAction(Venster ouder) {
		this.ouder = ouder;
		//Icon instellen
		try {
			Image img = ImageIO.read(getClass().getResource("/icons/pauze.png"));
			img = img.getScaledInstance(30, 30, Image.SCALE_AREA_AVERAGING);
			putValue(LARGE_ICON_KEY, new ImageIcon(img));
			img = img.getScaledInstance(15, 15, Image.SCALE_AREA_AVERAGING);
			putValue(SMALL_ICON, new ImageIcon(img));
		} catch (IOException ex) {
			Logger.getLogger(StartAction.class.getName()).log(Level.SEVERE, null, ex);
		}
		//Naam instellen
		putValue(NAME, "Pauze");
		//Tooltiptekst instellen
		putValue(SHORT_DESCRIPTION, "Pauze");
		//Key instellen
		putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
	}

	/**
	 * De methode wordt hier geïmplementeerd en roept de methode stop() aan
	 * van het attribuut Zee dat zich in zijn ouderVenster bevindt.
	 * @param e ActionEvent e wordt meegegeven
	 * @see ActionEvent
	 */
	public void actionPerformed(ActionEvent e) {
		ouder.getZee().stop();
		ouder.getStartAction().setEnabled(true);
		setEnabled(false);
	}
}
